#ifndef SETTINGSDIALOG_H
#define SETTINGSDIALOG_H

#include <QDialog>
#include <QAbstractButton>
//---------------------------------------------------------------------------------


/* Класс для хранения настроек программы */
class CProgramSettings
{
public:
    CProgramSettings()
    {
        mLat = 0;
        mLng = 0;
        mTimeZone = 0;
        mTithiHint = false;
        mEkadashHint = false;
    }

    double Lat() {return mLat;}
    double Lng() {return mLng;}
    double TimeZone() {return mTimeZone;}
    bool TithiHint() {return mTithiHint;}
    bool EkadashHint() {return mEkadashHint;}

    void Set(double lat, double lng, double timeZone, bool tithiHint, bool ekadashHint)
    {
        mLat = lat;
        mLng = lng;
        mTimeZone = timeZone;
        mTithiHint = tithiHint;
        mEkadashHint = ekadashHint;
    }

    void SetDefaults()
    {
        // значения по умолчанию для Москвы на лето 2014 года
        mLat = 55.7541;
        mLng = 37.6204;
        mTimeZone = 4;
        mEkadashHint = true;
    }

    void SetLat(double lat) {mLat = lat;}
    void SetLng(double lng) {mLng = lng;}
    void SetTimeZone(double timeZone) {mTimeZone = timeZone;}
    void SetTithiHint(bool hint) {mTithiHint = hint;}
    void SetEkadashHint(bool hint) {mEkadashHint = hint;}

    bool SaveFile();
    bool LoadFile();

private:
    double mLat; // широта
    double mLng; // долгота
    double mTimeZone; // часовой пояс (смешение в часах от UTC)
    bool mTithiHint; // предупреждать о наступлении титхи
    bool mEkadashHint; // предупреждать о наступлении экадаша
};
//---------------------------

namespace Ui {
class SettingsDialog;
}

/* Класс диалога настроек программы */
class SettingsDialog : public QDialog
{
    Q_OBJECT

public:
    explicit SettingsDialog(QWidget *parent = 0);
    ~SettingsDialog();

    /* Задать координаты, ф-ция вызывается из javascript */
    Q_INVOKABLE void SetCoord(double lat, double lng);
    /* Возвращает экземпляр класса с настройками */
    CProgramSettings Settings();

private slots:
    void mainFrame_javaScriptWindowObjectCleared();
    void buttonBoxClicked(QAbstractButton* b);
    void loadURLFinished(bool ok);
    void OnAnyValueModified(QString str);
    void OnTimeZoneValueModified(double v);
    void on_ekadashiHintCheckBox_stateChanged(int arg1);
    void on_tithiHintCheckBox_stateChanged(int arg1);

signals:
    /* Кнопка "Применить" кликнута */
    void ApplySettings(CProgramSettings* s);

private:    
    /*Сохранить-загрузить настройки в файл в формате параметр=значение \перевод_строки */
    bool SaveSettingsFile();
    bool LoadSettingsFile();

    Ui::SettingsDialog *ui;
};
//---------------------------
//---------------------------------------------------------------------------------

#endif // SETTINGSDIALOG_H
